const router = require('express').Router()
const userModel = require('../../models/userModel')
const aes = require('../../common/aes')
const Jwt = require('../../common/jwt')

// 是否注册账号(微信)
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： openid
router.post('/iswxregister', async (req, res, next) => {
    // 解构赋值
    let { openid } = req.body;
    if (openid) {
        await userModel.iswxregister(openid)
            .then(
                content => {
                    res.send(content)
                },
                err => {
                    res.send(err)
                }
            )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 注册账号(微信)
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： user_name,user_email,user_phone,user_pwd,user_create_time
router.post('/wxregister', async (req, res, next) => {
    // 解构赋值
    let { user_name, user_email, user_phone, user_pwd, openid, user_imgUrl } = req.body;
    if (user_name && user_email && user_phone && user_pwd && user_imgUrl) {
        let date = new Date();
        let user_create_time = date.toLocaleDateString() + " " + (date.toLocaleTimeString());
        // console.log(user_create_time)        
        let user_password = aes.aesEncrypt(user_pwd);
        await userModel.wxregister(user_name, user_email, user_phone, user_password, user_create_time, openid, user_imgUrl)
            .then(
                content => {
                    res.send(content)
                },
                err => {
                    res.send(err)
                }
            )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 登录账号
// URL: /api/user/login
// 示例地址: http://localhost:3000/api/user/login
// 方式： post
// 参数： user_phone,user_pwd
router.post('/wxlogin', async (req, res) => {
    let { user_phone, user_pwd } = req.body;
    if (user_phone && user_pwd) {
        await userModel.wxlogin(user_phone)
            .then(
                data => {
                    // 取出加密的user_pwd
                    if (data.user_pwd) {
                        // console.log({x:data.user_pwd})
                        // console.log({user_pwd})
                        // 获取用户id
                        let id = data.id;
                        let token;
                        if (id) {
                            let jwt = new Jwt(id)
                            token = jwt.getToken()
                        }
                        // console.log("生成的token:",jwt.getToken());
                        // 解密
                        let bool = aes.aesDecrypt(user_pwd, data.user_pwd)
                        // console.log({bool})
                        if (bool) {
                            res.send({
                                code: 200,
                                msg: "微信端登录成功",
                                login: bool,
                                user_phone,
                                token,
                                user_name: data.user_name,
                                user_imgUrl: data.user_imgUrl,
                            })
                        }
                        else {
                            res.send({
                                code: -1,
                                msg: "微信端登录失败,账号或密码错误",

                            })
                        }
                    }
                    else {
                        res.send({
                            code: 404,
                            msg: "该账号不存在"
                        })
                    }
                },
                err => {
                    res.send(err)
                }
            )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
})

// 获取账号信息
// URL: /api/user/info
// 示例地址: http://localhost:3000/api/user/info
// 方式： post
// 参数： token user_phone
router.post('/wxinfo', async (req, res) => {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    let user_phone = req.body.user_phone;
    let result = new Jwt(token).verifyToken()
    if (result.code === 200) {
        // 登录有效
        // 用户id
        let id = result.info.data;
        // console.log({id})
        await userModel.wxinfo(id, user_phone)
            .then(
                content => {
                    res.send(content)
                },
                err => {
                    res.send(err);
                }
            )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }

})

// 获取用户列表接口
// 地址： /api/user/list
// 方式： GET
// 参数： page, pageSize
// 响应数据格式： json格式
// 示例： http://localhost:3000/api/user/list
router.get('/list', async (req, res) => {
    let { page, pageSize } = req.query;
    console.log(req.query);
    console.log(page, pageSize);


    if (page == undefined || pageSize == undefined) {

        res.send({
            code: -1,
            msg: "缺少参数",
        })
    }
    else {
        console.log(222);

        await userModel.list(page, pageSize)
            .then(
                content => {
                    // 把获取的结果响应给前端
                    res.send(content)
                },
                err => {
                    // 把失败的结果响应给前端
                    res.send(err)
                }
            )
    }
})



// 注册账号
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： user_name,user_email,user_phone,user_pwd,user_create_time
router.post('/register', async (req, res, next) => {
    // 解构赋值
    let { user_name, user_email, user_phone, user_pwd } = req.body;
    if (user_name && user_email && user_phone && user_pwd) {
        let date = new Date();
        let user_create_time = date.toLocaleDateString() + " " + (date.toLocaleTimeString());
        // console.log(user_create_time)        
        let user_password = aes.aesEncrypt(user_pwd);
        await userModel.register(user_name, user_email, user_phone, user_password, user_create_time)
            .then(
                content => {
                    res.send(content)
                },
                err => {
                    res.send(err)
                }
            )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 登录账号
// URL: /api/user/login
// 示例地址: http://localhost:3000/api/user/login
// 方式： post
// 参数： user_email,user_pwd
router.post('/login', async (req, res) => {
    let { user_email, user_pwd } = req.body;
    if (user_email && user_pwd) {
        await userModel.login(user_email)
            .then(
                data => {
                    // 取出加密的user_pwd
                    if (data.user_pwd) {
                        // 获取用户id
                        let id = data.id;
                        let token;
                        // console.log("生成的token:",jwt.getToken());

                        if (id) {
                            let jwt = new Jwt(id)
                            token = jwt.getToken()
                            // console.log("生成的token:",jwt.getToken());

                        }

                        // 解密
                        let bool = aes.aesDecrypt(user_pwd, data.user_pwd)

                        if (bool) {
                            res.send({
                                code: 200,
                                msg: "登录成功",
                                login: bool,
                                user_email,
                                token: id,
                            })
                        }
                        else {
                            res.send({
                                code: -1,
                                msg: "登录失败,账号或密码错误",

                            })
                        }
                    }
                    else {
                        res.send({
                            code: 404,
                            msg: "该账号不存在"
                        })
                    }
                },
                err => {
                    res.send(err)
                }
            )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
})


// 获取账号信息
// URL: /api/user/info
// 示例地址: http://localhost:3000/api/user/info
// 方式： post
// 参数： token user_email
router.post('/info', async (req, res) => {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    // console.log(token);

    // let user_email = req.body.user_email;
    // let result = new Jwt(token).verifyToken()
    // console.log(result);

    // if(result.code === 200){
    // 登录有效
    // 用户id
    // let id = result.info.data;
    // console.log({id})
    let id = token;
    await userModel.info(id)
        .then(
            content => {
                res.send(content)
            },
            err => {
                res.send(err);
            }
        )
    // }
    // else {
    //     // 登录失效
    //     res.send({
    //         code: -1,
    //         msg: "登录状态失效,请重新登录"
    //     })
    // }

})

// 修改资料
router.post('/modify', async (req, res) => {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    let { user_addr, user_birthday, user_sex, user_name, user_email, user_phone } = req.body;
    // let result = new Jwt(token).verifyToken()
    // if(result.code === 200){
    //     // 登录有效
    //     // 用户id
    //     let id = result.info.data;
    let id = token;
    // console.log({id})
    await userModel.modify(id, user_addr, user_birthday, user_intro, user_sex, user_name, user_email, user_phone)
        .then(
            content => {
                res.send(content)
            },
            err => {
                res.send(err);
            }
        )
    // }
    // else {
    //     // 登录失效
    //     res.send({
    //         code: -1,
    //         msg: "登录状态失效,请重新登录"
    //     })
    // }
})

// 删除账号
router.post('/remove', async (req, res) => {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    // let user_email = req.body.user_email;
    let result = new Jwt(token).verifyToken()
    if (result.code === 200) {
        // 登录有效
        // 用户id
        let id = result.info.data;
        console.log({ id })
        await userModel.remove(id)
            .then(
                content => {
                    res.send(content)
                },
                err => {
                    res.send(err);
                }
            )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }
})

// 获取账号信息
// 参数：user_id
router.post('/img', async (req, res) => {
    // 获取token信息（临时身份，令牌）
    // let token = req.headers.token || req.body.token;
    let user_id = req.body.user_id;
    await userModel.getUserimgUrl(user_id)
        .then(
            content => {
                res.send(content)
            },
            err => {
                res.send(err);
            }
        )
    // let result = new Jwt(token).verifyToken()
    // if(result.code === 200){
    //     // 登录有效
    //     // 用户id
    //     // let id = result.info.data;
    //     console.log({id})
    //     // await userModel.getUserimgUrl(id)
    //     // .then(
    //     //     content=> {
    //     //         res.send(content)
    //     //     },
    //     //     err=>{
    //     //         res.send(err);
    //     //     }
    //     // )
    // }
    // else {
    //     // 登录失效
    //     res.send({
    //         code: -1,
    //         msg: "登录状态失效,请重新登录"
    //     })
    // }
})


// 修改用户资料
// token user_name
router.post('/modify', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        let { user_name } = req.body;
        if (user_sex && user_age && user_address) {
            // 登录状态
            let user_id = result.info.data;//用户id
            // 修改用户信息
            await userModel.modify(user_id, user_name).then(
                (content) => {
                    // 响应数据给前端
                    res.send(content)
                },
                (err) => {
                    res.send(err)
                }
            )
        }
        else {
            res.send({
                code: -1,
                msg: '缺少参数。'
            })
        }

    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})

module.exports = router;